今天要來介紹的是map的用法,這也是一個很棒的用法,我絕對不是什麼每個都會說很棒的人,娓娓聽我道來,真的很好用
我們在一開始的時候,會使用for迴圈一一將迭代資料取出,再組成我們想要的樣子
a = []
for i in range(0, 6):
a.append(i*i)
print(a)
# [0, 1, 4, 9, 16, 25]
再認識推導式之後,我們會用一行推導式輕鬆解決
b = [i*i for i in range(0, 6)]
print(b)
# [0, 1, 4, 9, 16, 25]
照我上面的邏輯,知道有了map之後就該用map來操作了吧,Bingo答對了~~
def add(a, b):
return a*b
print(map(add, (1,2)))
# <map object at 0x10dfaa8b0>
# map第一個參數是一個函數,第二個參數擺迭代的資料
可是每次都要另外宣告一個函數是有點麻煩,所以我們可以透過lambda匿名函數輕鬆解決,另外我們可以從上面的結果發現,map()回傳的是一個map的物件,我們可以加上list或set做轉換就可以看到完整資料的內容,並作利用
c = list(map(lambda a,b: a*b, (1,), (2, )))
print(c) # [3]
這是一個簡單的示意,當然實際上還有很大的操作空間,只要不是一個巢狀的for迴圈,太困難的操作,都能夠透過map搭配lambda來寫,不過推導式也是有它的好處,推導式還可以在後面多加一個if判斷式,只能說視情況操作
明天我要來介紹一個跟map很像,但又不是完全一樣的用法,他叫「reduce & filter」